home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt86oct.arc / ALLOC.ARC / MYTERMIN.MOD < prev   
Text File  |  1985-07-12  |  2KB  |  116 lines

  1. IMPLEMENTATION MODULE MyTerminal;
  2.  
  3. (* Some small but useful additions to the Terminal module. *)
  4.  
  5. IMPORT Terminal;
  6.  
  7. VAR powerOfTen: ARRAY[0..4] OF CARDINAL;
  8.  
  9.  
  10. PROCEDURE WriteLnString(s:ARRAY OF CHAR);
  11. BEGIN
  12.     Terminal.WriteString(s);
  13.     Terminal.WriteLn;
  14. END WriteLnString;
  15.  
  16. PROCEDURE WriteInt(i:INTEGER; spaces:CARDINAL);
  17. BEGIN
  18.     IF i < 0 THEN
  19.     writeNum(CARDINAL(-i), spaces-1, TRUE);
  20.     ELSE
  21.     writeNum(CARDINAL(i), spaces, FALSE);
  22.     END;
  23. END WriteInt;
  24.  
  25. PROCEDURE WriteCard(c, spaces:CARDINAL);
  26. BEGIN
  27.     writeNum(c, spaces, FALSE);
  28. END WriteCard;
  29.  
  30. PROCEDURE writeNum(c, spaces:CARDINAL; neg:BOOLEAN);
  31. VAR p:CARDINAL;
  32.     i:INTEGER;
  33. BEGIN
  34.     p := places(c);
  35.     FOR i := 1 TO INTEGER(spaces) - INTEGER(p) DO
  36.     Terminal.Write(' ');
  37.     END;
  38.     IF neg THEN 
  39.     Terminal.Write('-'); 
  40.     END;
  41.     FOR i := p-1 TO 0 BY -1 DO
  42.     Terminal.Write(CHR((c DIV powerOfTen[i]) + ORD('0')));
  43.     c := c MOD powerOfTen[i];
  44.     END;
  45. END writeNum;
  46.  
  47. PROCEDURE places(c:CARDINAL):CARDINAL;
  48. (* Returns the number of places c takes to print; i.e. trunc(1+log10(c)). *)
  49. VAR i:CARDINAL;
  50. BEGIN
  51.     FOR i := 4 TO 0 BY -1 DO
  52.     IF (c DIV powerOfTen[i]) > 0 THEN
  53.         RETURN i+1;
  54.     END;
  55.     END;
  56.     RETURN 1;
  57. END places;
  58.     
  59.  
  60. PROCEDURE pause(msg:ARRAY OF CHAR);
  61. (* Prevents the screen from blanking and returning to the Finder until the
  62.    user hits a key.  msg is typed out. *)
  63. VAR ch:CHAR;
  64. BEGIN
  65.     Terminal.WriteString(msg);
  66.     Terminal.Read(ch);
  67. END pause;
  68.  
  69. PROCEDURE fatal(msg:ARRAY OF CHAR);
  70. BEGIN
  71.     WriteLnString(msg);
  72.     pause('Hit any key to die--');
  73.     HALT;
  74. END fatal;
  75.  
  76.  
  77.         (*** Copies of Terminal procedures ***)
  78.  
  79. PROCEDURE WriteString(s:ARRAY OF CHAR);
  80. BEGIN
  81.     Terminal.WriteString(s);
  82. END WriteString;
  83.  
  84. PROCEDURE WriteLn;
  85. BEGIN
  86.     Terminal.WriteLn;
  87. END WriteLn;
  88.  
  89. PROCEDURE Write(c:CHAR);
  90. BEGIN
  91.     Terminal.Write(c);
  92. END Write;
  93.  
  94. PROCEDURE Read(VAR c:CHAR);
  95. BEGIN
  96.     Terminal.Read(c);
  97. END Read;
  98.  
  99. PROCEDURE ClearScreen;
  100. BEGIN
  101.     Terminal.ClearScreen;
  102. END ClearScreen;
  103.  
  104. PROCEDURE Beep;
  105. BEGIN
  106.     Terminal.Beep;
  107. END Beep;
  108.  
  109. BEGIN
  110.     powerOfTen[0] := 1;
  111.     powerOfTen[1] := 10;
  112.     powerOfTen[2] := 100;
  113.     powerOfTen[3] := 1000;
  114.     powerOfTen[4] := 10000;
  115. END MyTerminal.
  116.     powerOfTen[1]